# Copyright (c) 2015, 2024, Oracle and/or its affiliates.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License, version 2.0, as
# published by the Free Software Foundation.
#
# This program is designed to work with certain software (including
# but not limited to OpenSSL) that is licensed under separate terms, as
# designated in a particular file or component or in included license
# documentation. The authors of MySQL hereby grant you an additional
# permission to link the program and your derivative works with the
# separately licensed software that they have either included with
# the program or referenced in the documentation.
#
# Without limiting anything contained in the foregoing, this file,
# which is part of Connector/C++, is also subject to the
# Universal FOSS Exception, version 1.0, a copy of which can be found at
# https://oss.oracle.com/licenses/universal-foss-exception.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU General Public License, version 2.0, for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA


SET(CMAKE_VERBOSE_MAKEFILE 0)

INCLUDE_DIRECTORIES("${CMAKE_BINARY_DIR}/include")
INCLUDE_DIRECTORIES("${CMAKE_BINARY_DIR}/include/jdbc")
INCLUDE_DIRECTORIES("${CMAKE_BINARY_DIR}/include/jdbc/cppconn")

SET(MYSQLCPPCONN_BUILD_EXAMPLES 1 CACHE BOOL "build-examples")
IF(MYSQLCPPCONN_BUILD_EXAMPLES)

  IF(WIN32)
    IF(CMAKE_BUILD_TYPE STREQUAL "Debug")
      LINK_DIRECTORIES(${MYSQL_DIR}/lib/debug)
    ELSEIF(CMAKE_BUILD_TYPE STREQUAL "")
      LINK_DIRECTORIES(${MYSQL_DIR}/lib/opt)
    ENDIF(CMAKE_BUILD_TYPE STREQUAL "Debug")

    ADD_DEFINITIONS("-D_SCL_SECURE_NO_WARNINGS")

    SET(MY_TARGET_LINK_LIBRARIES connector-jdbc)
    IF(MYSQLCLIENT_STATIC_BINDING)
      SET(MY_TARGET_LINK_LIBRARIES ${MY_TARGET_LINK_LIBRARIES})
    ENDIF(MYSQLCLIENT_STATIC_BINDING)

    SET(CMAKE_FIND_LIBRARY_SUFFIXES ".dll")
    FIND_LIBRARY(MYSQLCPPCONN_DYNLOAD_MYSQL_LIB
      NAMES
        libmysql
      PATHS
        ${MYSQL_LIB_DIR}
        ${MYSQL_LIB_DIR}/lib/${libsuffixDist}
        ${MYSQL_LIB_DIR}/lib  #mysqlclient may be in lib for some c/c distros
        ${MYSQL_LIB_DIR}/libmysql/${libsuffixBuild}
        ${MYSQL_LIB_DIR}/client/${libsuffixBuild}
        $ENV{MYSQL_LIB_DIR}
        $ENV{MYSQL_LIB_DIR}/lib/${libsuffixDist}
        $ENV{MYSQL_LIB_DIR}/lib  #mysqlclient may be in lib for some c/c distros
        $ENV{MYSQL_LIB_DIR}/libmysql/${libsuffixBuild}
        $ENV{MYSQL_LIB_DIR}/client/${libsuffixBuild}
        $ENV{MYSQL_DIR}/lib/${libsuffixDist}
        $ENV{MYSQL_DIR}/lib  #mysqlclient may be in lib for some c/c distros
        $ENV{MYSQL_DIR}/libmysql/${libsuffixBuild}
        $ENV{MYSQL_DIR}/client/${libsuffixBuild}
        $ENV{ProgramFiles}/MySQL/*/lib/${libsuffixDist}
        $ENV{ProgramFiles}/MySQL/*/lib
        $ENV{SystemDrive}/MySQL/*/lib/${libsuffixDist}
        $ENV{SystemDrive}/MySQL/*/lib
        NO_DEFAULT_PATH
    )

    ELSEIF(NOT WIN32)
      SET(MY_TARGET_LINK_LIBRARIES connector-jdbc)
      IF(MYSQLCLIENT_STATIC_BINDING)
        SET(MY_TARGET_LINK_LIBRARIES ${MY_TARGET_LINK_LIBRARIES})
      ENDIF(MYSQLCLIENT_STATIC_BINDING)

      FIND_LIBRARY(MYSQLCPPCONN_DYNLOAD_MYSQL_LIB
        NAMES
          libmysqlclient_r.so
          libmysqlclient.so
        PATHS
          ${MYSQL_LIB_DIR}
          ${MYSQL_LIB_DIR}/libmysql_r/.libs
          ${MYSQL_LIB_DIR}/lib
          ${MYSQL_LIB_DIR}/lib/mysql
          $ENV{MYSQL_LIB_DIR}
          $ENV{MYSQL_LIB_DIR}/libmysql_r/.libs
          $ENV{MYSQL_LIB_DIR}/lib
          $ENV{MYSQL_LIB_DIR}/lib/mysql
          $ENV{MYSQL_DIR}/libmysql_r/.libs
          $ENV{MYSQL_DIR}/lib
          $ENV{MYSQL_DIR}/lib/mysql
          ${MYSQL_CLIB_DIR}
          ${MYSQL_CLIB_DIR}/libmysql_r/.libs
          ${MYSQL_CLIB_DIR}/lib
          ${MYSQL_CLIB_DIR}/lib/mysql
          /usr/lib/mysql
          /usr/local/lib/mysql
          /usr/local/mysql/lib
          /usr/local/mysql/lib/mysql
          /opt/mysql/mysql/lib
          /opt/mysql/mysql/lib/mysql
          NO_DEFAULT_PATH
      )
    ENDIF(WIN32)

    if(NOT MYSQLCLIENT_STATIC_LINKING)
      list(APPEND MY_TARGET_LINK_LIBRARIES MySQL::client)
    endif()


    ADD_DEFINITIONS("-DDYNLOAD_MYSQL_LIB=\"${MYSQLCPPCONN_DYNLOAD_MYSQL_LIB}\"")
    MESSAGE(STATUS "MySQL dynamic load test library: ${MYSQLCPPCONN_DYNLOAD_MYSQL_LIB}")

    IF(CMAKE_COMPILER_IS_GNUCC AND MYSQLCPPCONN_GCOV_ENABLE)
      SET(MY_GCOV_LINK_LIBRARIES gcov)
    ENDIF(CMAKE_COMPILER_IS_GNUCC AND MYSQLCPPCONN_GCOV_ENABLE)


    foreach(example
      connect
      connection_meta_schemaobj
      debug_output
      exceptions
      prepared_statement
      resultset
      resultset_binary
      resultset_meta
      resultset_types
      statement
      dynamic_load
    )

      ADD_EXECUTABLE(${example} ${example}.cpp)
      SET_TARGET_PROPERTIES(${example} PROPERTIES
        LINK_FLAGS "${MYSQLCPPCONN_LINK_FLAGS_ENV} ${MYSQL_LINK_FLAGS}"
        COMPILE_FLAGS "${MYSQLCPPCONN_COMPILE_FLAGS_ENV}"
        FOLDER "Tests/jdbc"
      )
      TARGET_LINK_LIBRARIES(${example}
        ${MY_TARGET_LINK_LIBRARIES} ${MY_GCOV_LINK_LIBRARIES}
        ${MYSQLCPPCONN_BOOST_THREAD_LIBS} ${MYSQLCPPCONN_ICU_LIBRARY}
      )

      ADD_TEST(jdbc_${example} ${example})
      install_test(${example} ${example})

    endforeach()


ENDIF(MYSQLCPPCONN_BUILD_EXAMPLES)

MESSAGE(STATUS "Configuring examples")
